A typical implementation of a RAID (Redundant Array of Independent Disks) type storage subsystem includes a plurality of disk storage devices (such as magnetic disk drives) in electrical communication with a RAID disk storage device controller. Upon the receipt of a write or read command from a host computer, the RAID storage device controller writes blocks of data to or reads blocks of data from the disk storage devices. Depending upon the RAID implementation level, the blocks of data and the parity of the blocks of data are distributed among the disk storage devices.
Regardless of which disk storage device stores each block of data and which disk storage device stores the parity of the blocks of data, the value of the parity for the data to be stored on the disk storage device is typically generated by exclusive ORing (XORing) the corresponding data blocks on each of the disk storage devices. Thus, for example, if four disk storage devices, which will be referred to as disk drives, are used to store blocks of data, and if a fifth disk drive is used to store the parity of those blocks of data, the parity stored on the parity disk drive is generated by the expression: EQU P.sub.5 =DATA.sub.1 .sym.DATA.sub.2 .sym.DATA.sub.3 .sym.DATA.sub.4
where P.sub.5 is the parity stored on the 5th disk drive, DATA.sub.1,2,3,4 is the block of data stored on the first, 2nd, 3rd and 4th disk drives and .sym. is the exclusive OR (XOR) operation.
The value of parity of the data blocks is stored by the RAID system to reduce the probability that data will be irretrievable if that data stored on a disk drive becomes unreadable. Thus, if one of the disk drives fails so that its data becomes unreadable, each data block that is stored on that disk drive may be recovered from the corresponding data blocks stored on the remaining data disk drives and the parity stored on the parity disk drive.
Although such RAID implementations help assure the integrity of the data stored on the disk storage subsystem, disk subsystems in certain RAID implementations may, as a result of the storing of parity, require four disk operations when a block of data, D.sub.new, is written to a location on the disk storage device. That is, when the block of data, D.sub.new, is to be written to a location on a disk storage device, the block of data previously at the location on the disk, D.sub.old, is first read into memory on the disk storage device controller. Then the old parity data, P.sub.old, for the previously stored blocks of data including D.sub.old is read from the disk storage device containing the parity. Next, D.sub.new, D.sub.old and P.sub.old are exclusive OR'd to generate a new parity value, P.sub.new. Two write operations are then performed to write both P.sub.new and D.sub.new to the proper disks. While these operations are being performed by the microprocessor of the storage subsystem, the microprocessor is prevented from executing other tasks. The present invention reduces the amount of time the storage subsystem microprocessor uses to perform the required XOR operations on the data being transferred from the host.